package cn.zqy.demo2.day05.Exception;


import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/** 异常的注意事项:
 *      多个异常使用捕获又该如何处理呢？
 *             1. 多个异常分别处理。
 *             2. 多个异常一次捕获，多次处理。
 *             3. 多个异常一次捕获一次处理。
 */
public class Demo08ExceptionNotice {
    public static void main(String[] args) {
        //1. 多个异常分别处理。
        /*try {
            int[] arr = new int[]{1,2,3};
            System.out.println(arr[3]);
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println(e);  // java.lang.ArrayIndexOutOfBoundsException: 3
        }
        try {
            ArrayList<Integer> list = new ArrayList<>();
            Collections.addAll(list, 2,4,6);
            System.out.println(list.get(5));
        } catch (IndexOutOfBoundsException e) {
            System.out.println(e);
        }*/


        //2. 多个异常一次捕获，多次处理。
       /* try {
            int[] arr = new int[]{1,2,3};
            // 35行此处抛出异常，不执行36~38行的代码。故异常只打印一个
            System.out.println(arr[3]);
            ArrayList<Integer> list = new ArrayList<>();
            Collections.addAll(list, 2,4,6);
            System.out.println(list.get(5));
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println(e);
        } catch (IndexOutOfBoundsException e) {
            System.out.println(e);
        }*/


       // 3. 多个异常一次捕获一次处理。
       /* try {
            int[] arr = new int[]{1,2,3};
            System.out.println(arr[3]);
            ArrayList<Integer> list = new ArrayList<>();
            Collections.addAll(list, 2,4,6);
            System.out.println(list.get(5));
        } catch (Exception e) {
            System.out.println(e);
        }*/


        //运行时异常被抛出可以不处理。即不捕获也不声明抛出。
        //默认给虚拟机处理,终止程序,什么时候不抛出运行时异常了,在来继续执行程序
        int[] arr = {1,2,3};
        System.out.println(arr[3]);//ArrayIndexOutOfBoundsException: 3
        ArrayList<Integer> list = new ArrayList<>();
        Collections.addAll(list, 2,4,6);
        System.out.println(list.get(3));//IndexOutOfBoundsException: Index 3 out-of-bounds for length 3

        System.out.println("后续代码!");
    }
}
